iT邦幫忙

5

紅隊攻一條線,藍隊守一整面:「大哥沒有輸」

  • 分享至 

  • xImage
  •  

最近花了一些時間在看 RedSun。

其實會對它特別有興趣,不只是因為這是一個 Windows 本機提權漏洞。這幾年在看一些比較高階的漏洞研究時,我越來越有一種感覺:我最近看到的幾個有意思的案例,已經不太是找到一個很明顯的洞、打一個 Exploit 就結束,而是不斷往系統底層鑽,去找不同元件之間那些不起眼的邏輯落差,再把它們一層一層疊起來。

單獨看每一層,甚至可能都不像是什麼致命問題。

一個可以控制的檔案路徑、一個可以拖住執行流程的時序、一個 Reparse Point、一個高權限服務對路徑的信任,再加上一個最後會去使用這個檔案的系統元件。

每一件事情拆開來看,好像都只是 Windows 原本就存在的機制。真正有意思的是,有人看出了它們之間可以接起來。

RedSun 就讓我對這件事情特別有感。[^redsun]

一開始我只是想弄懂這個 Windows 本機提權到底是怎麼做的。把 PoC 一段一段拆開之後,真正讓我印象深刻的不是某一個 API,也不是哪一行程式特別神奇,而是整條利用鏈串起來的方式。

它不是那種很好理解的「這裡有一個 Buffer Overflow,所以控制 RIP,然後拿到 SYSTEM」。

它比較像是在系統裡找到幾個本來各自成立的條件,再慢慢把它們接在一起。

利用防毒軟體會以高權限處理檔案這件事,配合檔案系統的 Oplock 控制時序,再利用 Reparse Point 改變路徑最後指向的位置,接著讓高權限元件去使用前面準備好的結果。

單獨拆開來看,每一段都未必會讓人直覺想到「這是一個 SYSTEM 提權漏洞」。但當幾個條件同時成立,原本散落在不同地方的能力,就變成了一條完整的攻擊鏈。

前陣子又拜讀了 Orange 大神在 HITCON 講的:

「↖乂古法挖洞乂↘ ~~ 純邏輯 Microsoft Edge 零點擊沙箱逃逸鏈 ~~」[^orange]

標題本身就很 Orange。

現在整個產業都在談 AI 挖洞、Agentic Security,模型能不能自己找 0-day,結果另一邊還有老手藝人堅持「古法挖洞」,有種拿著鑿子慢慢敲系統底層的感覺。

偏偏這種古法才真的讓我有感。

不是突然找到一個無敵漏洞,一拳把 Edge Sandbox 打穿,而是對系統夠熟,知道每個元件在做什麼、信任什麼、什麼狀態可以被改變,再把幾個邏輯問題慢慢接成一條可以走通的路。

RedSun 是這樣,Edge Sandbox Escape 也是這樣。

看多了之後,我開始覺得,高階漏洞研究真正難的地方可能已經不只是「找到 Bug」。

而是看懂:

這個 Bug 到底讓我多了什麼能力,這個能力接下來還能拿來做什麼。

有的問題只能讓你控制路徑,有的只能讓你影響時序;第三個元件甚至根本沒有漏洞,只是它剛好有比較高的權限。

但只要這些條件可以接起來:

控制路徑 + 控制時序 + 高權限操作 + 另一個可信任的系統行為

最後得到的結果,可能跟任何一個單點問題原本看起來的嚴重程度完全不同。

也就是在這裡,我開始想到另一個問題。

這種事情一直以來很吃研究員的經驗、直覺,還有對底層系統的理解。

那 AI 有沒有可能自己做這件事?

不是把一份 Source Code 丟進去,然後問:

「這裡有沒有漏洞?」

而是讓它去理解:這個地方讓我得到什麼能力?需要哪些前置條件?這個結果能不能剛好滿足另一個元件的前置條件?如果再多一個權限落差、時序問題或可信任元件,能不能接出一條原本不存在於任何單一漏洞描述裡的路?

講白一點:

AI 能不能不只會找洞,還會串洞?

後來一路查資料,就查到最近的一篇論文:

Automating Attack Graph Construction for Agentic Pentesting: Towards Neuro-Symbolic Vulnerability Hunting[^attackgraph]

看到標題時,我第一個反應是:「原來真的已經有人往這裡走了。」

它不是單純讓 LLM 拿著 Kali Linux 到處試指令,而是先把 Nmap、Trivy、Semgrep 這些工具得到的資訊整理成可以推理的事實,再讓 LLM 協助產生攻擊規則,最後交給 MulVAL 做符號推理,建立 Attack Graph。

以前比較像:

「我看到這些資訊,我覺得下一步可以試這個。」

它想做的則比較接近:

「現在 A、B 條件已經成立,而 C 的前置條件剛好需要 A、B,所以 C 是一條可以被推導出來的路。」

研究本身還很早期。54 個題目雖然都能建立出至少一條通往目標的 Attack Graph,但真正漏洞的平均涵蓋率只有 53.7%,產生的路徑裡也有大量雜訊,noise-path rate 高達 83.9%。

離「AI 真的看懂整個攻擊面」顯然還有很長一段距離。

不過這時候我反而開始想到另外一件事。

一邊是 Orange 這種老手藝人,靠經驗跟對系統底層的理解,把幾個不起眼的邏輯問題串成一條攻擊鏈;另一邊是研究界開始試著把這件事情形式化,把狀態、前置條件、能力與結果整理成規則,再交給符號推理引擎去推導可能的 Attack Path。

方法差很多,但本質上都在問差不多的事情:

我現在手上有什麼條件?從這裡還能走去哪裡?

本來一路想到這裡,我都還在想紅隊。

如果有一天 AI 真的學會把這些 Primitive、Capability、Precondition 一層一層接起來,它是不是有可能自己找出一條以前沒人想到的攻擊鏈?

但再往下想,突然覺得有一件事情很不公平。

如果 AI 越來越會找攻擊路徑,那藍隊呢?

紅隊只要找到一條線

假設今天一個環境裡有一百條可能的攻擊路徑,對紅隊來說,最後並不需要讓一百條路全部成立。

只要找到其中一條可靠、真的能走通的路,就夠了。

例如:

Internet → Web Server → Vulnerability → Credential → Lateral Movement → SYSTEM

這一條成立,任務就可以繼續。

對這一次攻擊任務而言,另外九十九條最後能不能走,未必重要。

可是防守方不是這樣。

今天補掉 Web Server 的洞,不代表事情結束,因為攻擊者可能改走 VPN;撤掉一組 Credential,也不能代表安全,因為可能還有另外一組帳密;隔離 Host A,更不能證明 Host B 沒有留下 Persistence。

更麻煩的是,攻擊暫時沒有繼續,也不等於攻擊已經被阻止。

他可能只是停下來而已。

有點像那句「造謠一張嘴,闢謠跑斷腿」。

攻擊者只需要證明:

「這條路走得通。」

防守者卻得反過來確認:Credential 還有沒有用?Persistence 還在不在?有沒有其他 Lateral Movement?其他主機是不是也被碰過?C2 是真的斷了,還是只是暫時沒有 Beacon?

所以我後來想到一句滿能形容這件事的話:

紅隊攻的是一條線,藍隊守的是一整面。

這時候再回頭想以前很常聽到的瑞士奶酪理論,突然覺得跟攻防這件事情意外地搭。[^swiss]

瑞士奶酪模型原本是拿來解釋事故怎麼發生的。

每一道安全措施都像一片瑞士奶酪。它不是完整的,每一層都有自己的洞。真正發生事故,往往不是因為某一層有洞,而是某個時刻,不同防線上的洞剛好排成了一條線,讓危害一路穿過所有防護。

不過攻擊和事故還是有一個很大的差別:事故裡那些洞多半是被動地對齊,攻擊者卻會主動去找那條能對齊的線,甚至刻意創造讓條件成立的機會。

如果借來看攻擊鏈,我覺得也意外地合適。

防火牆有洞、身分權限有洞、端點有洞、某個服務的邏輯也有洞。單獨一層有問題,不一定會直接出大事。

可是只要那些洞剛好對得起來:

入口
  ↓
一個弱點
  ↓
取得某種能力
  ↓
剛好滿足下一層條件
  ↓
取得新的能力
  ↓
再穿過下一層
  ↓
Objective

一條攻擊鏈就出現了。

換個角度看,RedSun 那些 Primitive 的串接也很像這件事情。

真正厲害的不只是「這裡有幾個洞」。

而是看出:

這幾個洞居然排得起來。

這也讓我重新想了一下「紅隊攻一條線,藍隊守一整面」這句話。

一開始聽起來,好像藍隊很慘,因為紅隊只要找到一條線,藍隊卻得把整個面全部補乾淨。

可是其實也不完全是這樣。

藍隊根本不需要把每一片奶酪都做成沒有洞。

那也不可能。

只要在攻擊者真正抵達 Objective 以前,讓其中一個必要條件不成立,那一條 Attack Path 就會斷掉。

當然,這不代表攻擊者就一定無路可走,因為他可能還有其他路。

所以藍隊真正要做的,不只是切斷眼前這一條線,而是找出那些被很多 Attack Path 共用的條件,或者找到一組足以讓所有高風險路徑都走不到 Objective 的切點。

所以藍隊真正需要解決的問題,也許不是:

「我的環境裡還有沒有漏洞?」

答案大概永遠都是有。

比較有意義的問題應該是:

這些漏洞現在還能不能排成一條走得到 Objective 的路?

這兩個問題看起來很接近,其實差很多。

大哥沒有輸

想到這裡,我不知道為什麼突然想到《鬼滅之刃》的煉獄杏壽郎。

如果只看最後的結果,猗窩座活著離開,煉獄死了。

那炎柱是不是輸了?

但仔細想,他們兩個的勝利條件根本不一樣。

猗窩座要擊敗煉獄。

可是煉獄真正要完成的事情不是「一定要把猗窩座殺掉」,而是保護列車上的人、不讓傷害繼續擴大,最後撐到天亮。

而這些事情,他做到了。

所以「大哥沒有輸」如果不只是拿來當一句情懷台詞,我覺得其實滿符合防禦這件事情。

一台 Workstation 被打進去,不代表藍隊輸了。

一組 Credential 被偷走,也不代表整場防禦已經結束。

甚至某台 Server 被拿到 Administrator,都還不一定是最後結果。

真正該問的還是:

攻擊者到底有沒有完成他的 Objective?

Domain Admin 或其他高權限身分有沒有被拿到?核心資料有沒有出去?關鍵服務有沒有中斷?真正的 Crown Jewel 有沒有被碰到?

如果答案都還沒有,那攻擊者也許突破了幾層防線,但並沒有完成真正想做的事情。

這也是我現在理解 Assume Breach 比較直覺的方式。[^assume-breach]

不是幻想所有人永遠都進不來。

而是接受某一片奶酪遲早可能會有洞被穿過,再去確保那些洞不要一路對齊到底。

換句話說:

就算你進來了,我還是要讓你走不到真正重要的地方。

AI 如果只是幫忙看 Alert,好像還不太夠

想到這裡之後,我對 AI 用在藍隊這件事情的看法也有點改變。

現在講 AI SOC,很容易先想到讓 AI 幫忙看 EDR、查 SIEM、整理 Windows Event、對 MITRE ATT&CK,或把幾百筆 Alert 摘成一份比較能看的報告。

這些當然有幫助。

但本質上還是在讓藍隊跑快一點。

以前分析師要開五套平台、查十種資料,現在 AI 一次幫忙收整,效率提高很多,可是藍隊還是在一個事件、一個事件往後追。

如果真正的不對稱是「紅隊只需要找到一條線,藍隊面對的是整個攻擊面」,那只是跑得比較快,好像還沒有真的改變這件事。

比較有意思的,也許是換一個問題。

與其一直想證明:

「攻擊者現在還在不在?」

不如問:

按照目前知道的狀態,他現在還有哪些地方去得了?

前者很難回答。

今天沒有看到 C2,不代表沒有 C2;沒有看到新的登入,也不代表 Credential 沒外洩。

但後者至少有機會被模型化。

假設 AI 能理解整個環境裡 Host、User、Credential、Process、Service、Network、Privilege、Trust、Vulnerability 之間的關係,那看到的東西就不會只是一堆零散 Alert。

可能會變成:

某個 User 的 Credential 疑似外洩,而這組 Credential 可以登入 Host B;Host B 可以碰 Server C;Server C 又跟 Critical DB 存在某種高權限關係。

這時候問題就不只是:

「這個 PowerShell 到底是不是惡意?」

而會變成:

如果這組 Credential 真的已經落到攻擊者手上,他還有哪些路可以走到 Critical DB?

以及更重要的:

我要先切哪裡?

紅隊找路,藍隊找哪裡值得切

從這裡再回頭看 Attack Graph,就很有趣。

紅隊拿到圖,想的是:

我現在在哪?我要去哪?中間哪條路能走?

也就是 Path Finding。

藍隊其實可以看同一張圖,只是方向反過來。

攻擊者現在已經走到這裡,那我切掉哪個地方,可以讓最多高風險路徑一起失效?

假設二十幾條攻擊路徑最後都會經過同一組 Credential,可能根本不需要二十幾台主機一台一台處理。

先撤掉這組 Credential,也許就能讓一大片路一起斷掉。

但如果最簡單粗暴的方式是直接把 Production Server 關掉,安全上是乾淨了,公司大概也跟著不能做事。

所以防禦不會只是「哪一招最安全」。

還要考慮業務影響、現在的判斷有多可信、做錯了會發生什麼、事後復原要付多少成本。

以前這些事情很吃有經驗的人。

但如果有一天 AI 真的有辦法把企業環境維持成一張持續更新的圖,我覺得這比讓它多看幾萬筆 Alert 有意思得多。

防守者其實也不是完全站在劣勢

我們很常說攻擊者有先手優勢。

這當然沒錯。

他可以選時間、選目標、選方法。

但防守方其實也握著一個很大的優勢,只是以前常常沒辦法真的把它用起來。

因為整個環境是自己的。

有哪些 Host、有哪些帳號、誰可以登入哪裡、哪些 Service Account 權限特別高、哪些機器可以互通、哪些系統最重要,這些資訊理論上防守方都有機會知道。

攻擊者剛進來的時候,反而只能一點一點摸。

只是企業環境一大,這個優勢很快就會變成另一種痛苦。

幾千、幾萬台主機,加上 AD、IAM、Cloud、Firewall、VPN、EDR、SIEM,人不可能把所有東西一起放在腦袋裡。

資訊很多,最後反而變成資訊洪水。

如果 AI 有一天真的能維護一張持續更新的 Cyber World Model,把這些關係整理起來,那這個局面可能會有點不同。

當然,這張圖不會是上帝視角。它仍然受限於 Inventory、IAM、EDR、Network Telemetry 等資料來源,未知資產、Shadow IT、沒被看見的 Credential,甚至未知漏洞,都可能讓這張圖缺節點、缺邊。

攻擊者看到的是目前摸到的一小塊。

防守方至少比攻擊者更有機會掌握一張接近全貌、而且持續更新的地圖。

這可能才是 AI 真正有機會縮小紅藍不對稱的地方。

不是證明敵人不存在,而是讓他的目標變得不可達

從研究 RedSun,到看 Orange 用「古法」串出 Edge Sandbox Escape,再一路找到 Agentic Pentesting 跟 Attack Graph 的研究,我原本都還在想紅隊。

AI 能不能自己找出一條以前沒人想到的攻擊鏈?

但繞了一圈之後,我反而覺得同一個問題放到藍隊也很有意思。

如果紅隊 AI 越來越會找路,那藍隊 AI 真正要學的可能不是「更快找到所有壞東西」,而是看懂整張圖。

知道哪些洞現在排成了一條線,哪些只是單獨存在的洞,以及哪些條件一旦被切掉,就能讓一批高風險路徑一起失效。

我們大概永遠沒辦法證明一個環境裡沒有任何未知漏洞,也很難證明攻擊者百分之百已經離開。

但是我們或許可以做到另一件事:

在目前看得到、驗證得到的狀態下,讓攻擊者無法再走到我們真正想保護的東西。

所以回過頭看,「大哥沒有輸」好像真的滿適合拿來形容防禦。

安全的勝利不一定代表第一道門從來沒有被突破。

也不代表每一片瑞士奶酪上都不能有洞。

攻擊者可以進來,可以拿下一個點,也可以讓防守方付出代價。

但只要那些洞最後沒有一路排到他真正想去的地方,只要他的 Objective 仍然到不了,那這場戰鬥就還不能說防守方輸了。

紅隊攻的是一條線,藍隊守的是一整面。

可是藍隊真正要做的,也許從來不是把整個面補到一個洞都沒有。

而是看清楚那些洞,不要讓它們連成線。


參考資料與延伸閱讀

[^redsun]: RedSun / Microsoft Defender 本機提權
- Picus Security, BlueHammer & RedSun: Windows Defender CVE-2026-33825 Zero-day Vulnerability Explained
其中的 RedSun 技術段落說明 Cloud Files rollback、opportunistic lock、NTFS junction,以及將 Defender 的 SYSTEM 權限寫入導向 C:\Windows\System32 的利用流程。
- Huntress, Nightmare-Eclipse Tooling Seen in Real-World Intrusion
補充 RedSun、BlueHammer、UnDefend 在實際入侵事件中的觀察。
- BleepingComputer, New Microsoft Defender “RedSun” zero-day PoC grants SYSTEM privileges
RedSun 公開 PoC 與 SYSTEM 權限提升的背景報導。

[^orange]: Orange Tsai / Microsoft Edge 純邏輯漏洞鏈
- HITCON 2026 官方議程, ↖乂古法挖洞乂↘ ~~ 純邏輯 Microsoft Edge 零點擊沙箱逃逸鏈 ~~
- Zero Day Initiative, Pwn2Own Berlin 2026 - Day One Results
ZDI 官方紀錄指出 Orange Tsai 以 4 個 logic bugs 串出 Microsoft Edge sandbox escape。

[^attackgraph]: Agentic Pentesting / Attack Graph
- Oliver Stevanovic, Jasmin Wachter, Automating Attack Graph Construction for Agentic Pentesting: Towards Neuro-Symbolic Vulnerability Hunting, arXiv, 2026.
論文將 Nmap、Trivy、Semgrep 的掃描結果轉換成 MulVAL predicates,再透過 LLM 輔助建立 Datalog rules,最後由 MulVAL/XSB 推導 Attack Graph。論文在 54 個 CyBench Web CTF 任務上評估,報告平均 ground-truth vulnerability coverage 為 53.7%、mean noise-path rate 為 83.9%

[^swiss]: 瑞士奶酪理論(Swiss Cheese Model)
- James Reason, Human error: models and management, BMJ, 2000;320:768–770. DOI: 10.1136/bmj.320.7237.768
文中以 Swiss Cheese Model 說明多層防禦、屏障與保護措施各自存在弱點;當弱點在特定情況下對齊,事故軌跡便可能穿透多層防線。

[^assume-breach]: Assume Breach / Zero Trust
- Microsoft Learn, Zero Trust Guidance Center
- Microsoft Learn, Zero Trust adoption framework overview
Microsoft 將 Zero Trust 的核心原則整理為 Verify explicitly、Use least privilege、Assume breach;其中 Assume breach 強調縮小 blast radius、分段存取,以及持續偵測與快速回應。


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言